import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';
import '../models/task_model.dart';

/// 任务服务类
/// 负责处理任务的CRUD操作和本地存储
class TaskService {
  static const String _boxName = 'tasks';
  late Box<TaskModel> _taskBox;

  /// 初始化Hive并打开任务箱
  Future<void> init() async {
    await Hive.initFlutter();
    Hive.registerAdapter(TaskModelAdapter());
    _taskBox = await Hive.openBox<TaskModel>(_boxName);
  }

  /// 获取所有任务
  List<TaskModel> getAllTasks() {
    return _taskBox.values.toList();
  }

  /// 根据状态获取任务
  List<TaskModel> getTasksByStatus(String status) {
    return _taskBox.values
        .where((task) => task.status == status)
        .toList();
  }

  /// 添加新任务
  Future<void> addTask(TaskModel task) async {
    await _taskBox.put(task.id, task);
  }

  /// 更新任务
  Future<void> updateTask(TaskModel task) async {
    await task.save();
  }

  /// 删除任务
  Future<void> deleteTask(String id) async {
    await _taskBox.delete(id);
  }

  /// 清空已完成的任务
  Future<void> clearCompletedTasks() async {
    final completedTasks = getTasksByStatus('completed');
    for (final task in completedTasks) {
      await deleteTask(task.id);
    }
  }

  /// 关闭任务箱
  Future<void> close() async {
    await _taskBox.close();
  }
}